/*
 * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals
 */
$.validator.addMethod("nifES", function (value, element) {
    "use strict";

    if (this.optional(element)) {
        return true;
    }

    value = value.toUpperCase();

    // Basic format test
    if (!value.match("((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)")) {
        return false;
    }

    // Test NIF
    if (/^[0-9]{8}[A-Z]{1}$/.test(value)) {
        return ( "TRWAGMYFPDXBNJZSQVHLCKE".charAt(value.substring(8, 0) % 23) === value.charAt(8) );
    }

    // Test specials NIF (starts with K, L or M)
    if (/^[KLM]{1}/.test(value)) {
        return ( value[8] === "TRWAGMYFPDXBNJZSQVHLCKE".charAt(value.substring(8, 1) % 23) );
    }

    return false;

}, "Please specify a valid NIF number.");
